package cn.psvmc.cxzapi.service.goods;

import cn.psvmc.cxzapi.config.mybatisplus.service.impl.AbstractService;
import cn.psvmc.cxzapi.exception.ServiceException;
import cn.psvmc.cxzapi.mapper.goods.TGoodsExampleMapper;
import cn.psvmc.cxzapi.model.common.GoodsEntity;
import cn.psvmc.cxzapi.model.common.MarketEntity;
import cn.psvmc.cxzapi.model.goods.TGoodsExample;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 商品推荐实例表 服务实现类
 * @Author auto
 * @Date 2024-08-13
 */
@Service
public class TGoodsExampleService extends AbstractService<TGoodsExampleMapper, TGoodsExample> {

    @Resource
    private TGoodsExampleMapper tGoodsExampleMapper;

    /**
    * @Date auto 2024-08-13 新增商品推荐实例表
    * @Param tGoodsExample 商品推荐实例表
    * @Return int
    */
    public int add(TGoodsExample tGoodsExample){
        return tGoodsExampleMapper.insert(tGoodsExample);
    }

    /**
    * @Date auto 2024-08-13 更新商品推荐实例表
    * @Param tGoodsExample 商品推荐实例表模型
    * @Return int
    */
    public int edit(TGoodsExample tGoodsExample){
        checkObjAndVersion(tGoodsExample.getGeid(), tGoodsExample.getRversion());//校验对象和版本号

        // 字段为null 不更新
        return tGoodsExampleMapper.updateById(tGoodsExample);
    }

    /**
    * @Date auto 2024-08-13 查询商品推荐实例表详情
    * @Param id 唯一id
    * @Return cn.psvmc.cxzapi.model.goods.TGoodsExample
    */
    public TGoodsExample detail(Integer id){
        return tGoodsExampleMapper.selectById(id);
    }

    /**
    * @Date auto 2024-08-13 删除商品推荐实例表
    * @Param id 唯一id
    * @Param rversion 版本号
    * @Return int
    */
    public int delete(Integer id, Integer rversion) {
        checkObjAndVersion(id, rversion);//校验对象和版本号

        return tGoodsExampleMapper.deleteById(id);
    }

    //校验对象和版本号
    private void checkObjAndVersion(Integer id, Integer rversion) {
        // 查询商品推荐实例表详情
        TGoodsExample tGoodsExample = this.detail(id);
        if (tGoodsExample == null) {
            throw new ServiceException("未查询到对应的商品推荐实例表信息！");
        }
        if (!rversion.equals(tGoodsExample.getRversion())) {
            throw new ServiceException("数据已更新，请刷新后重试！");
        }
    }

    /**
     * @Description 商品列表
     * @Date 2024/8/17 22:46
     * @Author YWX
     * @Param [iPage, entity]
     * @Return com.baomidou.mybatisplus.core.metadata.IPage<java.util.Map>
     **/
    public IPage<Map> listGoods(Page<TGoodsExample> iPage, GoodsEntity entity) {
        return tGoodsExampleMapper.listGoodsByTag(iPage, entity);
    }

    /**
     * @Description 列表
     * @Date 2024/8/18 16:16
     * @Author YWX
     * @Param [entity]
     * @Return java.util.List<java.util.Map>
     **/
    public List<Map> listAll(MarketEntity entity){
        return tGoodsExampleMapper.listAll(entity);
    }
}
